# -*- coding: utf-8 -*-
# 版权所有 (c) [王广旭]，本程序创作于[2025年1月19号]
# 本程序由王广旭开发，保留所有权利。
# 严禁将本程序以任何形式用于商业用途。
# 非商业使用需遵循以下条件：
# - 不得删除或修改此版权声明。
# - 若对程序进行再分发，需包含此版权声明。

import datetime
import re
import os
import chardet


def licensor_over_time(over_time):
    # 获取当前日期和时间
    current_datetime = datetime.datetime.now()
    new_datetime = current_datetime + datetime.timedelta(days=over_time)
    new_authorization_time = [new_datetime.year, new_datetime.month, new_datetime.day,
                              new_datetime.hour, new_datetime.minute, new_datetime.second]
    new_authorization_time_str = str(new_authorization_time)

    # 读取 licensee.py 文件，自动检测编码
    input_file = "../common/utils/licensee.py"
    output_file = "licensee_temp.py"

    # 自动检测文件编码
    with open(input_file, 'rb') as file_in:
        raw_data = file_in.read()
        result = chardet.detect(raw_data)
        encoding = result['encoding']

    # 如果检测的编码为 None，尝试使用 utf-8 编码
    if encoding is None:
        encoding = 'utf-8'

    # 使用检测到的编码格式重新读取文件，带有错误处理
    with open(input_file, 'r', encoding=encoding, errors='replace') as file_in:
        content = file_in.read()

    # 使用正则表达式替换 authorization_time 的值
    pattern = re.compile(r'(self\.authorization_time\s*=\s*)\[.*?\]')
    modified_content = re.sub(pattern, fr'\1{new_authorization_time_str}', content)

    # 将修改后的内容写入新文件
    with open(output_file, 'w', encoding=encoding) as file_out:
        file_out.write(modified_content)

    # 替换原文件
    os.replace(output_file, input_file)


if __name__ == "__main__":
    licensor_over_time(15)
